
//2831.找出最长等值子数组
class Solution {
public:
    int longestEqualSubarray(vector<int>& nums, int k) {
        int n = nums.size();
        unordered_map<int, int> count;

        count[nums[0]]++;
        int right=1,ret=0;

        for(int left=0;left<n;left++)
        {
            //right-left表示窗口长度,count[nums[left]]表示窗口类相同值个数
            while (right < n && k >= right - left - count[nums[left]])    //保持窗口内不同个数小于k
            {
                count[nums[right]]++;   //进行入窗口
                right++;
            }
            ret = max(ret, count[nums[left]]);  //更新答案
            count[nums[left]]--;    //出窗口
        }
        return ret;
    }
};